// 通用导出
/* eslint-disable */
import { ElMessageBox, ElLoading } from 'element-plus'
import axios from '@/request/http' // 导入http中创建的axios实例
// import { to, ResponseData } from '@/utils/await-to'
interface params {
  total: string | number
  http: {
    // 接口地址 ex: /api/getTable
    url: string
    // 接口类型 (可不传，默认POST)
    // type: 'POST',
    // 请求头 (可不传)
    // headers: {},
    // 数据结构（返回值不统一时使用，拼接出层级关系）
    // dataStructure: ['data'],
    // 接口请求参数
    params: any
  }
  excel: {
    // 文件名称
    wjmc: string
    // Excel表头
    // prop:键 label:列名 width:宽度（可不传，默认10，以Excel宽度计算）
    headers: Array<any>
    // [
    //   // 示例
    //   {
    //     prop: 'ajmc',
    //     label: '案件名称',
    //     width: '30',
    //     groupName: 'xxxx',
    //     format: {
    //       type: 'convert',
    //       value: {
    //         1: '男',
    //         2: '女'
    //       }
    //     }
    //   },
    //   {
    //     prop: 'slrq',
    //     label: '受理日期',
    //     groupName: 'xxxx',
    //     format: {
    //       type: 'date',
    //       value: 'yyyy-MM-dd'
    //     }
    //   }
    // ]
  }
}
export default class ExportUtil {
  // 导出当前页
  static currentPage(params: params) {
    exportExcel(params)
  }

  // 导出全部
  static allPage(params: params) {
    ElMessageBox.confirm(`所有数据共【${params.total || 0}】条，是否继续?`, '提示', {
      confirmButtonText: '确定',
      cancelButtonText: '取消',
      type: 'warning',
    }).then(() => {
      const data = JSON.parse(JSON.stringify(params))
      data.http.params.pageNum = 1
      data.http.params.pageSize = 100000
      exportExcel(data)
    })
  }
}
function exportExcel(params: params) {
  const loading = ElLoading.service({
    lock: true,
    text: '正在导出，请稍后...',
    background: 'rgba(0, 0, 0, .5)',
  })
  exportService(params).then((res: any) => {
    const a = document.createElement('a')
    document.body.appendChild(a)
    a.href = window.URL.createObjectURL(res)
    a.download = params.excel.wjmc + '.xlsx'
    a.click()
    document.body.removeChild(a)
  })
  loading.close()
}
function exportService(data: params) {
  return axios.post('/export/exportExcel', data, { responseType: 'blob' })
}
